﻿using System;
using System.Collections.Generic;

namespace QldtSdh.DAL.Models
{
    public partial class CongViecBanGiangVien
    {
        public CongViecBanGiangVien()
        {
        }

        public string CongViecBanGiangVienGUID { get; set; }
        public string MaGiangVien { get; set; }
        public string MaHocKyGUID { get; set; }
        public DateTime TuNgay { get; set; }
        public DateTime DenNgay { get; set; }
        public int Buoi { get; set; }
        public int ThuTrongTuan { get; set; }
        public string NoiDungBan { get; set; }

        public static byte BuổiSáng = 1;
        public static byte BuổiChiều = 2;
        public static byte BuổiTối = 4;
        public static byte CảNgày = 7;
        public bool BanBuoiSang { get { return ((byte)Buoi & BuổiSáng) == BuổiSáng; } }
        public bool BanBuoiChieu { get { return ((byte)Buoi & BuổiChiều) == BuổiChiều; } }
        public bool BanBuoiToi { get { return ((byte)Buoi & BuổiTối) == BuổiTối; } }
        public bool BanCaNgay { get { return (byte)Buoi == CảNgày; } }

        public static byte Thứ_2 = 1;
        public static byte Thứ_3 = 2;
        public static byte Thứ_4 = 4;
        public static byte Thứ_5 = 8;
        public static byte Thứ_6 = 16;
        public static byte Thứ_7 = 32;
        public static byte Thứ_8 = 64;
        public static byte CácThứTrongTuần = 127;
        public bool BanThu2 { get { return ((byte)ThuTrongTuan & Thứ_2) > 0; } }
        public bool BanThu3 { get { return ((byte)ThuTrongTuan & Thứ_3) > 0; } }
        public bool BanThu4 { get { return ((byte)ThuTrongTuan & Thứ_4) > 0; } }
        public bool BanThu5 { get { return ((byte)ThuTrongTuan & Thứ_5) > 0; } }
        public bool BanThu6 { get { return ((byte)ThuTrongTuan & Thứ_6) > 0; } }
        public bool BanThu7 { get { return ((byte)ThuTrongTuan & Thứ_7) > 0; } }
        public bool BanThu8 { get { return ((byte)ThuTrongTuan & Thứ_8) > 0; } }


        public static string FORMAT = "dd/MM/yyyy";
        /// <summary>
        /// "ngày tuNgay" hoặc "khoảng tuNgay ÷ denNgay"
        /// </summary>
        public string KhoảngThờiGianString
        {
            get
            {
                if (TuNgay == DenNgay)
                    return string.Format("ngày {0}", TuNgay.ToString(FORMAT));
                else
                    return string.Format("khoảng {0} ÷ {1}", TuNgay.ToString(FORMAT), DenNgay.ToString(FORMAT));
            }
        }

        public string KhoảngThờiGianString2
        {
            get
            {
                if (TuNgay == DenNgay)
                    return string.Format("Ngày {0}", TuNgay.ToString(FORMAT));
                else
                    return string.Format("{0} {1} ÷ {2} {3}",
                        BLL.BizThoiKhoaBieu.GetThuTrongTuan(TuNgay), TuNgay.ToString(FORMAT),
                        BLL.BizThoiKhoaBieu.GetThuTrongTuan(DenNgay), DenNgay.ToString(FORMAT));
            }
        }

        /// <summary>
        /// "thứ 2, 3, 5, CN"
        /// </summary>
        public string ThứTrongTuầnString
        {
            get
            {
                var thuTrongTuan = (byte)ThuTrongTuan;
                string result = "";
                if ((thuTrongTuan & Thứ_2) > 0)
                    result += result.Length == 0 ? "2" : ", 2";
                if ((thuTrongTuan & Thứ_3) > 0)
                    result += result.Length == 0 ? "3" : ", 3";
                if ((thuTrongTuan & Thứ_4) > 0)
                    result += result.Length == 0 ? "4" : ", 4";
                if ((thuTrongTuan & Thứ_5) > 0)
                    result += result.Length == 0 ? "5" : ", 5";
                if ((thuTrongTuan & Thứ_6) > 0)
                    result += result.Length == 0 ? "6" : ", 6";
                if ((thuTrongTuan & Thứ_7) > 0)
                    result += result.Length == 0 ? "7" : ", 7";
                if ((thuTrongTuan & Thứ_8) > 0)
                    result += result.Length == 0 ? "CN" : ", CN";
                return "Thứ " + result;
            }
        }

        /// <summary>
        /// "buổi sáng, tối"
        /// </summary>
        public string BuổiString
        {
            get
            {
                var common = (byte)Buoi;
                string result = "";
                if ((common & BuổiSáng) > 0)
                    result += result.Length == 0 ? "sáng" : ", sáng";
                if ((common & BuổiChiều) > 0)
                    result += result.Length == 0 ? "chiều" : ", chiều";
                if ((common & BuổiTối) > 0)
                    result += result.Length == 0 ? "tối" : ", tối";
                return "buổi " + result;
            }
        }

        public string BuổiString2
        {
            get
            {
                var common = (byte)Buoi;
                string result = "";
                if ((common & BuổiSáng) > 0)
                    result += result.Length == 0 ? "Sáng" : ", Sáng";
                if ((common & BuổiChiều) > 0)
                    result += result.Length == 0 ? "Chiều" : ", Chiều";
                if ((common & BuổiTối) > 0)
                    result += result.Length == 0 ? "Tối" : ", Tối";
                return "Buổi " + result;
            }
        }
    }
}
